// * AMD —— 最古老的模块系统之一，最初由 require.js 创建。
// * CommonJS —— 为 Node.js 服务器创建的模块系统。
// * UMD —— 另一个模块系统，建议作为通用的模块系统，它与 AMD 和 CommonJS 都兼容。
// * 现在，它们都在慢慢成为历史的一部分，但我们仍然可以在旧脚本中找到它们。

// *******************************************************************************************************************

// * 什么是模块？
// * 一个模块就是一个文件。一个脚本就是一个模块。模块可以相互加载。

// * 模块始终使用 “use strict” 严格模式。
// * 模块级作用域，模块代码只有当前模块可以访问，不同的模块之间不可访问（除非相互引入）。

// * 模块代码仅在第一次导入时被解析。
// * 如果同一个模块被导入到多个其他位置，那么它的代码只会执行一次，即在第一次被导入时。然后将其导出（export）的内容提供给进一步的导入（importer）。
// * 只执行一次会产生很重要的影响，我们应该意识到这一点。

// *******************************************************************************************************************

// * import.meta 对象包含关于当前模块的信息。
// * 它的内容取决于其所在的环境。在浏览器环境中，它包含当前脚本的 URL，或者如果它是在 HTML 中的话，则包含当前页面的 URL。

// *******************************************************************************************************************

// * 模块脚本是延迟的：
// * 模块脚本 总是 被延迟的。要等到 HTML 文档被处理完成才会执行它（不会阻塞 HTML 的加载）。而常规脚本则会立即运行（会阻塞 HTML 加载）。
